#include <stdio.h>
#include <math.h>

int asc(int x, int y) {
    if (x > y) return 1;
    else return 0;
}

int desc(int x, int y) {
    if (x > y) return 0;
    else return 1;
}

int ascAbs(int x, int y) {
    if (fabs(x) > fabs(y)) return 1;
    else return 0;
}

void sort(int a[], int n, int (*cmp)(int , int )) {
    int i, j;
    for (i = 0; i < n - 1; i++)
        for (j = i + 1; j < n; j++)
            if (cmp(a[i], a[j])) {
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
}

int main() {
    int n;
    printf("请输入整数的个数 n: ");
    scanf("%d", &n);

    int a[n];
    printf("请输入 %d 个整数: ", n);
    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    // 升序输出
    sort(a, n, asc);
    printf("升序排序结果: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    // 降序输出
    sort(a, n, desc);
    printf("降序排序结果: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    // 按绝对值升序输出
    sort(a, n, ascAbs);
    printf("按绝对值升序排序结果: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");

    return 0;
}
